dbtにより生成されるドキュメントの「Lineage Graph」を使って各dbtコマンドの実行対象のmodelやsourceを確認する #dbt
さがらです。
dbtでドキュメントをコマンド一つで簡単に生成出来るということは、dbtを少し知っている方ならご存知だと思います。
そんなdbtのドキュメントですが、ドキュメント上のLineage Graphを使って、--select
や--exclude
でオプション指定した場合に実行されるmodelを確認できることはご存知でしょうか?私はつい最近まで知らなかったです。
「これ便利だなー!」と感じたので、dbtのドキュメント上のLineage Graphに関して、--select
などのオプション含め、出来ることをまとめてみます。
Lineage Graphの起動方法
起動はとても簡単です!
対象のドキュメントを開いたら、右下のアイコンを押せば起動できます。
次章から、このLineage Graph上での各機能についてまとめていきます。
resources
まず、一番左下のresourcesについてです。
表示しているリネージにおいて、どのdbtのリソースを対象とするかを選択できます。
例えばModels
を選択項目から外すと、リネージ上のModelを灰色にすることができます。
packages
packagesでは、選択したpackage(project)だけ、リネージ上で色づいて表示させることが可能です。
このドキュメントを生成したdbt projectでは別のリポジトリ(parent_project
)をpackageとしてインストールしており、sourceやstagingフォルダ内のmodelを定義しています。
このparent_project
を選択項目から外すと、リネージ上で該当するsourceやmodelの色が灰色になります。
tags
tagsでは、modelやsourceなどにtagを付与している場合に、リネージ上で対象とするものを絞り込むことができます。
例えば、mart
とcustomer
というtagだけを選択すると、選択したtagが付与されているmodelだけ色づけて表示することができます。
また、今回のdbt projectではsourceに関してtagを付与していなかったので、untagged
だけを選択すると、sourceだけが色づいて表示されます。
--selectと--exclude
dbtでは各種コマンドを実行するときに実行対象のmodelを--select
や--excluce
で絞り込むことができます。
まずはシンプルな例で、--select
にcustomers
と入れると、customers.sqlが実行されるため、customersだけが色づいて表示されます。
加えて、+を加えることで、上流または下流のmodelも含め、実行対象のmodelを色づいて表示することも可能です。
さらに、tag:
オプションも指定可能です!
modelとしてcustomers
を指定した上で、tags:order
とすることで「order」がtagとして付与されているmodelも色づいて表示可能です。(--select
オプションはスペースで条件を区切るとORで実行されます。)
この--selectや--excludeオプションを用いた実行対象のmodelを確認できることが、個人的なLineage Graphの目玉機能です!
sourceやmodelの数が増えてくるとdbtにより生成されるDAGも複雑になってしまい、「指定のmodelと、関連するmodelやsourceだけを実行するにはどのように--select
や--exclude
を記述すればいいのだろう」となることもあると思います。
そんな時、このドキュメント上のLineage Graphを使うことで、--select
や--exclude
オプションを用いたときに実行されるmodelやsourceのシミュレーションが可能となります!
最後に
dbtにより生成されるドキュメントの「Lineage Graph」を使って各dbtコマンドの実行対象のmodelやsourceを確認する方法をまとめてみました。
リネージを見ることが出来るだけでもありがたいのですが、対象とする物を絞り込みできるのは更にありがたいですね!
管理するmodelやsourceが多くなってきたときにはぜひLineage Graphをご利用ください。